package org.framework.common.api.service.bo;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.framework.common.api.entity.CommonFile;
import org.framework.common.api.service.dao.CommonFileDao;
import org.framework.common.api.support.constant.SystemConstants;
import org.framework.common.api.support.model.FileModel;
import org.framework.common.ext.util.SystemUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("fileBo")
public class CommonFileBo extends CommonBoAdapter<CommonFile, String> {
	
	@Autowired
	private CommonFileDao fileDao;

	/**
	 * 保存文件.
	 * 
	 * @param model
	 * @param file
	 * @return
	 * @throws IOException
	 * @author chanlong(陈龙)
	 * @date 2016年3月12日 下午12:34:07
	 */
	public Object save(FileModel model, File file) throws Exception {
		
		CommonFile entity = new CommonFile(model, file);
		entity.setVersion(maxversion(entity.getName()));
		
		return fileDao.save(entity);
	}
	
	/**
	 * 获取文件版本.
	 * 
	 * @param filename
	 * @return
	 * @author chanlong(陈龙)
	 * @throws Exception 
	 * @date 2016年3月12日 下午12:34:26
	 */
	public String maxversion(final String filename) throws Exception{
		String version = fileDao.getVersion(filename);
		return SystemUtils.maxversion(CommonFile.VERSION_PREFIX_FILE, version, CommonFile.DEFAULT_VERSION_SERIAL);
	}
	
	/**
	 * 获取文件列表.
	 * @param recordId
	 * @return
	 * @author chanlong(陈龙)
	 * @throws Exception 
	 * @date 2016年4月24日 下午1:31:18
	 */
	public List<CommonFile> files(final String recordId) throws Exception{
		return fileDao.findByRecordId(recordId);
	}

	/**
	 * 删除文件.
	 * @param ids
	 * @throws Exception
	 * @author chanlong(陈龙)
	 * @date 2016年4月24日 下午2:50:55
	 */
	public void delete(final String ids) throws Exception {
		fileDao.deleteByIds(StringUtils.split(ids,SystemConstants.SYMBOL_COMMA));
	}
}
